// 公共数据、插件js

    // sh为当前项目的公共插件模块,调用时请用sh.方法名()调用，防止方法重名。
    var sh = (function(mod,$){

    // ****以下数据的值都通过ajax从后台回传,这里的true/false仅为模拟数据

        //登录状态，true为已登录，false为未登录
        var isLogin = true;
        //是否正在直播,false关闭，true打开
        var isCasting = false;
        //是否打开物联网，false关闭，true打开
        var isNetOn = false;
        // 20190429新增：是否可以调控空调，首页和教室控制页公用属性
        var isControllerOn = false; // false为不可以，true为可以

    // ****以上数据的值都通过ajax从后台回传,这里的true/false仅为模拟数据

        //后台获取头部通知数据,头部、通知面板公用
        var msgArr = [
            {
                id:0,
                msg:" 今天下午打算扫除今天下午打算扫除今天下午今天下午打算扫除今天下午打算扫除今天下午今天下午打算扫除今天下午打算扫除今天下午今天下午打算扫除今天下午打算扫除今天下午",
                date:"2019/04/10"
            },
            {
                id:1,
                msg:" 第二条今天下午打算扫除今天下午打算扫除今天下午",
                date:"2019/04/8"
            },
            {
                id:2,
                msg:" 第三条今天下午打算扫除今天下午打算扫除今天下午",
                date:"2019/04/3"
            },
            {
                id:3,
                msg:" 第四条今天下午打算扫除今天下午打算扫除今天下午",
                date:"2019/04/12"
            }
        ];
        //数据初始化结束

        // 竖向翻滚插件,obj为需要翻滚的元素,dis为翻滚的元素(-高度)
        var AutoScroll = function(obj,dis){

            return function () {
                $(obj).find("ul:first").animate({
                    marginTop: dis
                }, 1200, function() {

                    // console.log(obj.get(0).offsetHeight);

                    $(this).css({
                        marginTop: "0px"
                    }).find("li:first").appendTo(this);



                });
            }

        }



        // 头部消息与时间切换插件，需后台更改消息出现为推送出现
        var tabmsg = function(msg){

            // 头部切换
            var timer = null
            var num = 0;//显示的通知的条数
            var len = msg.length;

            // console.log(len);

            var notehtml = "";
            // 用msgArr渲染通知列表
            for(var i=0;i<len;i++){
               notehtml += "<span index='" +msg[i].id+ "'><a href='tipContent.html?id="+msg[i].id+ "'>2019年4月15日 16时00分 [标题] "+msg[i].msg+"</a></span>";

                // notehtml += " <span index='" +msg[i].id+ "'><a href='javascript:void(0)' > 2019年4月15日 16时00分 [标题] " + msg[i].msg + "&nbsp;&nbsp;&nbsp;&nbsp;</a></span>";
            }
            $(".top-note .txt").append(notehtml);
            // ******** 点击时间显示通知，需要后台替换成后台推送消息则出现通知，去掉点击事件
            $(".top-time").click(function(){

                // $(this).removeClass("fadeInUp animated").addClass("fadeOutUp animated").css("display","none");
                // $(this).next().removeClass("fadeOutUp animated").css("display","block").addClass("fadeInUp animated");

                var _this = $(this);
                // $(".top-time").fadeOut().next().fadeIn();
                $(".top-time").fadeOut('slow');
                timer = setTimeout(function(){
                    $(".top-time").next().fadeIn('slow');
                },240);
                scrollVaue = 0;
                // clearInterval(setmarquee);

                // $('.txt-scroll-curs').txtscroll({
                //     'speed': 50,
                // })
                // 只有同时多条消息数时，才显示消息条数
                // if(len>1){
                //     var html = "<div class='note-num'><i class='red'>"+len+"</i> 条新消息</div>";
                //     $(".top-note").prepend(html);
                // }

                // 竖向翻滚
                // var timer = setInterval( AutoScroll("#s1","-2rem"), 1000);
                // scrollVertical($("#s1 ul"));

                //停止显示消息，时间上翻显示
                // setTimeout(function(){
                //     clearInterval(timer);
                //     _this.next().removeClass("fadeInUp animated").addClass("fadeOutUp animated").css("display","none");
                //     _this.removeClass("fadeOutUp animated").css("display","block").addClass("fadeInUp animated");
                // },len*40000)

                //横向滚动初始化
                setTimeout(function () {
                      $('.txt-scroll-curs').txtscroll({
                         'speed': 30
                 })},240);

                // 点击链接去掉滚动效果，隐藏消息，显示时间
                // $(".top-note .txt").on("click","a",function () {
                //     $(".scrollbox").scrollLeft(0);
                //      _this.next().removeClass("fadeInUp animated").addClass("fadeOutUp animated").css("display","none");
                //      _this.removeClass("fadeOutUp animated").css("display","block").addClass("fadeInUp animated");
                // })

            })


        }

        //格式化日期
        var dateFormat = function(fmt,date){
            var o = {
                "M+" : date.getMonth()+1,                 //月份
                "d+" : date.getDate(),                    //日
                "h+" : date.getHours(),                   //小时
                "m+" : date.getMinutes(),                 //分
                "s+" : date.getSeconds(),                 //秒
                "q+" : Math.floor((date.getMonth()+3)/3), //季度
                "S"  : date.getMilliseconds()             //毫秒
            };
            if(/(y+)/.test(fmt))
                fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length));
            for(var k in o)
                if(new RegExp("("+ k +")").test(fmt))
                    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
            return fmt;
        }

        //判断周
        var getNowDay = function(nowDay) {
            switch(nowDay){
                case 0:
                    nowDay = "星期日";
                    break;
                case 1:
                    nowDay = "星期一";
                    break;
                case 2:
                    nowDay = "星期二";
                    break;
                case 3:
                    nowDay = "星期三";
                    break;
                case 4:
                    nowDay = "星期四";
                    break;
                case 5:
                    nowDay = "星期五";
                    break;
                default:
                    nowDay = "星期六";
            }
            return nowDay;
        }

        // 浏览器可视区域的宽高
        var client = function(){
            if(window.innerWidth){
                return {
                    "width":window.innerWidth,
                    "height":window.innerHeight
                };
            }else if(document.compatMode === "CSS1Compat"){
                return {
                    "width":document.documentElement.clientWidth,
                    "height":document.documentElement.clientHeight
                };
            }else{
                return {
                    "width":document.body.clientWidth,
                    "height":document.body.clientHeight
                };
            }
        }

        // 重置页面内容的上边距，根据不同高度分辨率居中内容
        var centervertical = function(ele,headerH,footerH) {
            var eleH = ele.offsetHeight;
            var height = client().height;
            var top = (height - eleH - headerH - footerH) / 2;
            if(top>0){
                ele.style.marginTop = top + 'px';
            }
        }

        //横向滚动插件
        var scroll = function(obj){
            var tmp=(obj.scrollLeft)++;
            if(obj.scrollLeft==tmp){
                obj.innerHTML= obj.innerHTML+"&nbsp; &nbsp; &nbsp;"+obj.innerHTML;
            }
            if(obj.scrollLeft>=obj.firstChild.offsetWidth){
                obj.scrollLeft=0;
            }
        }



        //显示蒙层插件
        var pop = function(fullbgele) {
            var bh = $(window).height();
            var bw = $(window).width();
            fullbgele.css({
                height: bh,
                width: bw,
                display: "block"
            })
        }

        // 模式切换插件
        var modeTab = function(dom,className) {
            dom.on("click",function () {
                $(this).addClass(className).siblings().removeClass(className);
            })
        }

        // 自动设置每个页面内容在每种分辨率下垂直居中
        var verticalCenter = function () {
            var oMain = document.getElementsByTagName("main")[0];
            // var headerH = document.getElementsByTagName("header")[0].offsetHeight;
            var oFooter = document.getElementsByTagName("footer")[0];
            // var oFooterH = oFooter ? oFooter.offsetHeight : 0;
            centervertical(oMain,105,50);
        }

        // 视频高度97%，宽度16：9自适应

        // 视频高度97%，宽度16：9自适应
        var autoWidth = function(el,widthPercent){

            var newHeight = $("body").height()*0.97;
            $(el).height(newHeight);
            var newWidth = $(el).height()/widthPercent;
            $(el).width(newWidth);  // 0.5625 => 维持16:9比例,也就是9除以16*可替换其他比例
            var videoMarginLeft = -(newWidth/2);
            // $(el).css({"top":"50%","marginTop":-($(el).height()/2)});
            $(el).css({"left":"50%","marginLeft":videoMarginLeft});

            var bodyWidth = $("body").width();

            if(newWidth > bodyWidth) {
                newWidth =  $(el).width(bodyWidth);
                newHeight =  $(el).height($(el).width() * widthPercent);
                $(el).css({"left": "50%", "marginLeft": -($(el).width() / 2)});
                // $(el).css({"top":"50%","marginTop":-($(el).height()/2)});
            }

        }


        // 数组去重
        function uniq(array){
            var temp = []; //一个新的临时数组
            for(var i = 0; i < array.length; i++){
                if(temp.indexOf(array[i]) == -1){
                    temp.push(array[i]);
                }
            }
            return temp;
        }


        // 初始化翻页,渲染列表内容，用于重绘或初始化列表
        var createList = function (data,pageStep,targetUl,defaultImgUrl,pageIndex){ // 第一个参数为需加载的数据，第二个参数为一页显示的数量，第三个参数为列表的父级节点,第四个参数为图片默认地址,第五个参数是绘制时页面留在第几页
            var classesListLen = data.length;// 数据的总条数，后台通过ajax获取数据总数
            var pageStep = pageStep; // 一页显示数据条数
            pageIndex = pageIndex || 1;  // 如果有指定的页数，则显示指定页数，如果没有则显示第一页
            var totalPage = Math.ceil(classesListLen/pageStep); // 总页数
            (pageIndex>totalPage) && (pageIndex = totalPage);

            // 创建分页
            $("#Pagination").pagination({
                currentPage: pageIndex,
                totalPage: totalPage,
                isShow: true,// 显示首页，尾页
                count: 4, //显示总页数,多余隐藏切换才显示
                homePageText: "首页",
                endPageText: "尾页",
                prevPageText: "上页",
                nextPageText: "下页",
                callback: pageselectCallback
            });

            // 翻页回调，翻页时获取当前数据，并对当前页数据进行排序
            function pageselectCallback(pageIndex){//pageIndex为当前页码
                var oUl=$(targetUl);
                oUl.empty();
                // startIndex是当前页第一条数据id
                var startIndex = (pageIndex-1)*pageStep;
                // endIndex是当前页最后一条数据id
                var endIndex = pageIndex < totalPage ? pageStep*pageIndex : classesListLen;
                // 回调页面内数据个性化渲染函数
                getDataAndSortCallback(oUl,startIndex,endIndex,data,defaultImgUrl);
            }


            pageselectCallback(pageIndex);
        }


        // 小三角选择菜单
        function toggleMenu(setting){
            defaultSetting = {
                targetTitleEle:".active-status", //select content
                submenuEle:".active-item-sub-menu", //options 容器
                toggleClassName:"actived", // 一级菜单切换小三角的样式名
                subMenuChildEle:".active-item-sub-menu span", // options子元素
                defaultMenu:""
            }
            setting ? setting : defaultSetting;

            $("body").on("click",setting.targetTitleEle,function(){
                $(this).next(setting.submenuEle).toggle();
                var className = setting.toggleClassName;
                if(String($(this).attr("class")).indexOf(className)>=0){
                    $(this).removeClass(className);
                }else{
                    $(this).addClass(className);
                }
                var fullbgHtml = "<div class='fullbg' style='display: block;z-index: 0;opacity: 0;filter: alpha(opacity=0)'></div>"
                $("body").append(fullbgHtml);
            })

            $("body").on("click",setting.subMenuChildEle,function(){
                //判断如果为不限，则显示原始标签
                var menuHtml = ($(this).attr("optionIndex") == 0 && setting.defaultMenu) ? setting.defaultMenu : $(this).html();

                $(this).parent(setting.submenuEle).prev(setting.targetTitleEle).html(menuHtml);

                $(this).parent(setting.submenuEle).prev(setting.targetTitleEle).attr("status",$(this).attr("optionIndex"));

                $(this).parent(setting.submenuEle).hide();

                $(this).parent(setting.submenuEle).prev(setting.targetTitleEle).removeClass(setting.toggleClassName);


                $("body .fullbg").remove();
                // 切换状态回调函数
                changeStatusCallback($(this).parent(setting.submenuEle).prev(setting.targetTitleEle));
            })


            // $("body").on("mouseleave",setting.submenuEle,function(){
            //     $(this).prev(setting.targetTitleEle).removeClass(setting.toggleClassName);
            //     $(this).hide();
            // })

            $("body").on("click",".fullbg",function (event) {
                $(setting.submenuEle).hide();
                $(this).remove();
                $(setting.targetTitleEle).removeClass("actived");
            })
        }

        // 切换样式
        function toggleClass(el,className){ //el为元素，className为样式名
            $("body").on("click",el,function(){
                if(String($(this).attr("class")).indexOf(className)>=0){
                    $(this).removeClass(className);
                }else{
                    $(this).addClass(className);
                }
            })
        }

        // 获取星期
        function getWeek(date){

            var weeks = ["星期天","星期一","星期二", "星期三","星期四","星期五","星期六"];

            for (var i = 0; i < weeks.length; i++) {
                if (date == i) {
                    return weeks[i];
                }
            }
        }


        // 获取url参数
        function GetRequest() {
            var url = location.search; //获取url中"?"符后的字串
            var theRequest = new Object();
            if (url.indexOf("?") != -1) {
                var str = url.substr(1);
                strs = str.split("&");
                for(var i = 0; i < strs.length; i ++) {
                    theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
                }
            }
            return theRequest;
        }

        // 初始化错误提示框
        function initErrorWindow(el,errorMsg){
            var eHtml = ' <div class="errortip">\n' +
                '                '+errorMsg+'\n' +
                '                </div>';
            $(el).append(eHtml);
            clearTimeout(timer);
            var timer = setTimeout(function(){
                $(".errortip").fadeOut();
                clearTimeout(timer2);
                var timer2 = setTimeout(function(){ $(".errortip").remove();},500);
            },1500);

        }

        return mod = {
            isLogin : isLogin,
            isCasting : isCasting,
            isNetOn : isNetOn,
			isControllerOn:isControllerOn,
            msgArr : msgArr,
            getWeek : getWeek,
            autoWidth:autoWidth,
            toggleClass:toggleClass,
            uniq:uniq,
            tabmsg : tabmsg,
            AutoScroll :AutoScroll,
            dateFormat : dateFormat,
            getNowDay : getNowDay,
            client : client,
            centervertical : centervertical,
            scroll : scroll,
            pop : pop,
            modeTab : modeTab,
            verticalCenter:verticalCenter,
            createList:createList,
            toggleMenu:toggleMenu,
            GetRequest:GetRequest,
            initErrorWindow:initErrorWindow
        }

    })((window.sh || {}),jQuery);
// 公共插件结束


// 公共数据、插件js结束

// 扩展数组原型链，删除对应内容的数组元素
Array.prototype.remove = function(val) {
    var index = this.indexOf(val);
    if (index > -1) {
        this.splice(index, 1);
    }
};
window.onload = function(){

	document.body.addEventListener('touchmove', function(event) {
		event.preventDefault();
	}, false);

	document.body.addEventListener('touchstart', function(event) {
		event.preventDefault();
	}, false);

	document.body.addEventListener('gesturechange', function(event) {
		event.preventDefault();
	}, false);

	function handleEvent(event) {
		event.target.style.msTransform = "scale(" + event.scale + ")";
	}



	 document.body.addEventListener("MSGestureChange", handleEvent, false);

}
